Coordination of data received from one or more sources over one or more channels into a single context

ABSTRACT

A middleware messaging system is connected between user devices and content providers possibly through one or more networks. The middleware messaging system includes a coordination manager for coordinating partial messages transmitted between the user devices and the content providers. Partial messages are received by the middleware messaging system from one or more sources through one or more channels. Partial messages that are associated with each other comprise a single context and as such are coordinated and transmitted to one or more destinations through one or more channels.

FIELD OF THE INVENTION

[0001] The invention is generally related to computer networks. Moreparticularly, the invention is related to data coordination.

BACKGROUND OF THE INVENTION

[0002] In today's information age, a user may use one or more devices toretrieve desired information. For example, a user may use a cellularphone, personal digital assistant, lap top, etc., to retrieveinformation from a content provider over one or more networks. Thesedevices may include multimodal applications that receive/transmitinformation through one or more channels (i.e., paths on which signalsmay flow). For example, an application may transmit voice on onechannel, text on another channel, images on another channel, etc.Different requests may also travel on different channels. On the otherhand, an application may transmit both voice and data on the samechannel.

[0003] Regardless of the number of channels, these multimodalapplications exemplify the requirement of coordinated input from one ormore devices. For example, a user may input part of a single requestthrough a first modality, and the rest through a second modality.Without a system to recognize that these request fragments contribute toa single request (i.e., the input is not coordinated), it is notpossible to correctly service the request. Therefore, regardless ofwhether fragments of a request, fragments of a response, fragments froma “front-end,” or fragments from a “back-end” are received, coordinationof the fragments into a single context allows for the proper servicingof the data composed from the fragments.

SUMMARY OF THE INVENTION

[0004] An embodiment of the invention includes a method for coordinatingdata from one or more sources. The method comprises steps of receivingdata; determining whether the received data is partial data, whereinpartial data includes data to be coordinated with other received data(i.e., partial data is a fragment of the complete data); andcoordinating the received data with associated data in response to thereceived data being partial data. The associated data may be receivedbefore or after the received partial data.

[0005] Another embodiment of the invention includes a method ofcoordinating data received from one or more sources through one or morechannels. The data includes data being transmitted to one or moredestinations. The method comprises steps of receiving the data;determining whether the received data is partial data, wherein partialdata includes data to be coordinated with other received data (i.e.,partial data is a fragment of the complete data); and coordinating thereceived data with associated data in response to the received databeing partial data. The associated data may be received before or afterthe received partial data.

[0006] Yet another embodiment of the invention includes a systemcomprising a plurality of user devices connected to a plurality ofcontent providers through one or more networks. Messages transmittedbetween the plurality of user devices and the plurality of contentsproviders are received by a coordination manager. The coordinationmanager coordinates the messages that are associated with each othersuch that the coordinated messages are combined into a single message(i.e., context).

[0007] The methods of the present invention include steps that may beperformed by computer-executable instructions executing on acomputer-readable medium.

[0008] Those skilled in the art will appreciate these and other aspectsof various embodiments of the invention upon reading the followingdetailed description of a preferred embodiment with reference to thebelow-listed drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

[0009] The present invention is illustrated by way of example and notlimitation in the accompanying figures in which like numeral referencesrefer to like elements, and wherein:

[0010]FIG. 1 illustrates a block-diagram of an exemplary systemaccording to an embodiment of the invention; and

[0011]FIG. 2 illustrates a flow chart of an exemplary method accordingto an embodiment of the invention.

DETAILED DESCRIPTION OF THE INVENTION

[0012] In the following detailed description, numerous specific detailsare set forth in order to provide a thorough understanding of thepresent invention. However, it will be apparent to one of ordinary skillin the art that these specific details need not be used to practice thepresent invention. In other instances, well known structures,interfaces, and processes have not been shown in detail in order not tounnecessarily obscure the present invention.

[0013]FIG. 1 illustrates an exemplary system 100 according to anembodiment of the invention. A plurality of user devices 110 a . . . nare connected to application servers 120 a . . . k through a middlewaremessaging system (MMS) 130. The user devices 110 a . . . n may includeany conventional computing device, such as a laptop, personal computer(PC), work station, PDA, cellular phone, wired phone, pocket PC, e-mailretrieval device, etc. The user devices 110 a . . . n may transmitrequests for data via one or more networks, such as networks 140 a . . .i, to the MMS 130. The networks 140 a . . . i may include wired orwireless networks using one or more protocols to transmit data. Networkadaptors 150 a . . . m connected to the MMS 130 include ports forreceiving/transmitting data. The network adaptors 150 a . . . m maysupport different protocols to accommodate the different networks 140 a. . . i. The application servers 120 a . . . k may be directly connectedto the MMS 130 or connected through one or more networks, which mayinclude the networks 140 a . . . i. The application servers 120 a . . .k provide content to the user devices 110 a . . . n. For example, datamay be transmitted to the user device 110 a from the application servers120 a and 120 b via the MMS 130 in response to a user request for data.The MMS 130 may include conventional means for receiving data from theapplication servers 120 a . . . k.

[0014] The MMS 130 includes a coordination manager 160 for coordinatingdata from one or more sources. The coordination manager 160 coordinatesdata that may be received from one or more devices on one or morechannels. For example, data received from one or more user devices(e.g., user devices 110 a and/or 110 b) may be coordinated; datareceived from one or more servers (e.g., application servers 120 aand/or 120 b) may be coordinated; and data received from a user deviceand a server may be coordinated (e.g., user device 110 and applicationsever 120 a). The data may be received on one or more channels.

[0015] The data to be coordinated is data comprising parts of a singlecontext. Data may be coordinated for a request or a response. Forexample, the data to be coordinated can be all the data that is neededto make a request, or the data to be coordinated can be all the dataneeded to respond to a request.

[0016] The coordination manager 160 may be connected to a database 162for storing data to be coordinated. When data to be coordinated (i.e.,partial data) is received by the coordination manager 160, the partialdata may be stored in the database 162. Also, partial data may beretrieved from the database 162 and then coordinated with newly receivedother data.

[0017] The coordination manager 160 may include one or more servers. Acomputer program for coordinating messages may be stored and executed onthe one or more servers. The coordination manager 160 is not limited toservers and may include other computing devices having one or moreprocessors.

[0018] An example of coordinating data is as follows. A user desires tolocate a restaurant by asking for directions from a current location viaa wireless device (e.g., a cellular phone, which may be user device 110a). In doing so, data about his current location must eventually becomepart of the request. Thus, if the user is speaking through his phone tothe system 100 and says “I'd like directions to a restaurant within 10miles of my current location”, the user is only providing a partialrequest, which is transmitted to the coordination manager 160 through achannel. In addition, data supplied by the user's GPS device, forinstance, provides the remainder of the necessary data (i.e., thedevice's, and hence, the user's location), which is transmitted to thecoordination manager 160 through another channel. In another example,the user may point to a restaurant destination on a touch-sensitivemonitor in his car. The destination information may then be transmittedto the coordination manager 160 through yet another channel.

[0019] The coordination manager 160 may receive the first request fromthe cellular phone (e.g., 110 a). Before transmitting the request to anapplication server (e.g., application server 120 a) that can provide therequested data, the coordination manager 160 waits until all the datafor the request (e.g., the GPS information or the destinationinformation provided separately via the car monitor) is received andcompiled. Partial request data may be stored by the coordination manager160 in the database 162 until all request data is received. After allrequest data is received and compiled, the coordination manager 160transmits the request to the application server 120 a.

[0020] The data that is coordinated by the coordination manager 160 neednot be provided from a user device. Some or all the data may be providedfrom other sources. For example, the user may have user preferences,such as preferring a particular type of food, stored on a server (e.g.,application server 120 b) connected to the MMS 130. The applicationserver 120 b may transmit the user's restaurant-related preferences tothe coordination manager 160. The coordination manager 160 waits untilthis information is received, as well as the user's location, etc., suchthat all the request data may be transmitted to the application server120 a using, for example, a single message.

[0021] Data parts may be compiled, that is combined into a singlecoordinated data message and then transmitted to one or moredestinations. The data may be transmitted over a network using aprotocol established beforehand between the two systems.

[0022] The coordination manager 160 can coordinate data beingtransmitted to a user's device on one or more channels. For example, inresponse to a user's request to order a list of books, a number ofapplication servers may need to be contacted to establish theavailability of each book. The coordination manager 160 coordinates allthe responses from all the application servers into a single response topresent to the user over any number of channels.

[0023] It will be apparent to one of ordinary skill in the art thatthese examples are provided by way of illustration and not oflimitation. In addition, the coordination manager 160 may coordinatedata received from one or more sources on one or more channels.Furthermore, the coordinated data may be transmitted to one or moredestinations on one or more channels. The coordinated data may includerequests for data or responses to requests for data or other messages.

[0024] The coordination manager 160 may coordinate data based upon avariety of techniques that are largely implementation dependent. In oneembodiment, message header information may identify that data containedin the message's body is only part of a request and is to becoordinated. For example, the data received from the user's cellularphone may include a header that indicates that the contained data is theposition information that is to be coordinated with the user's requestfor directions (from the user's current location). In anotherembodiment, an extensible markup language (XML) document containing apartial request, perhaps corresponding to an XML document typedefinition (DTD) or Schema, may include information that identifies thedata (e.g., source and requested information expected from the source)to be coordinated.

[0025] Other coordination techniques known to one of ordinary skill inthe art may be implemented without departing from the spirit and scopeof the invention. Furthermore, using header information, information inthe XML document or other techniques, the coordination manager 160 maydetermine whether received data needs to be coordinated or whetherspecific data comprises a complete request that does not need to becoordinated.

[0026]FIG. 2 illustrates an exemplary method 200 according to anembodiment of the invention. In step 205, the coordination manager 160waits for incoming data. In step 210, the coordination manager 160receives data.

[0027] In step 215, the coordination manager 160 determines whether thereceived data is partial data (i.e., data to be coordinated with otherdata). This determination may be performed, for example, using XMLdocument requests, DTDs and/or header information. Partial data mayeventually be coordinated with other associated partial data.

[0028] In step 220, if the received data is not partial data, the datais transmitted to a destination, such as a user device (e.g., userdevice 110 a), an application server (e.g., application server 120 a),etc. In step 225, if the received data is partial data, the coordinationmanager 160 determines whether associated data (i.e., any other partialdata to be coordinated with the data received in step 210) has beenreceived by the coordination manager 160. For example, the coordinationmanager 160 stores partial data in the database 162. The coordinationmanager 160 determines whether associated partial data is stored in thedatabase 162.

[0029] In step 230, if associated data has been received, thecoordination manager 160 aggregates the partial data received in step210 with the associated data, for example, after the associated data hasbeen retrieved from the database 162. This process continues iterativelyas described below.

[0030] In step 240, if associate data has not been received (asdetermined in step 225), the partial data is stored in the database 162and associated data subsequently received is eventually aggregated withthe stored partial data. The aggregated data may also be stored in thedatabase 162.

[0031] After the partial data is aggregated in step 230, thecoordination manager determines whether all the partial data to becoordinated has been received (step 235). This determination may beperformed, for example, using XML document requests, DTDs and/or headerinformation.

[0032] If all the data to be coordinated has been received, thecoordination manager 160 sends the coordinated data to itsdestination(s) (step 250). If all the data to be coordinated has notbeen received, the coordination manager 160 stores the partial datareceived in step 210 in the database (step 240). Then, the coordinationmanager 160 determines whether a request for more partial data should beinitiated (step 245). For example, a certain data state may beassociated with a need to request more data from specific source(s). Ifthe coordination manager 160 detects the data state, it requests datafrom one or more sources.

[0033] If the coordination manager 160 determines that a request shouldbe initiated, the request is initiated (step 255). The coordinationmanager 160 generates the request and transmits the request to a contentprovider or other destination that can provide the requestedinformation. Then, the coordination manager 160 waits for incoming data.If a request need not be initiated, as determined in step 245, thecoordination manager 160 waits for further incoming data.

[0034] The method 200 can be performed by a computer program. That is,the steps performed by the coordination manager 160 can be performed bya computer program. The computer program can exist in a variety of formsboth active and inactive. For example, the computer program and objectscan exist as software comprised of program instructions or statements insource code, object code, executable code or other formats; or firmwareprogram(s). Any of the above can be embodied on a computer readablemedium, which include storage devices and signals, in compressed oruncompressed form. Exemplary computer readable storage devices includeconventional computer system RAM (random access memory), ROM (read onlymemory), EPROM (erasable, programmable ROM), EEPROM (electricallyerasable, programmable ROM), and magnetic or optical disks or tapes.Exemplary computer readable signals, whether modulated using a carrieror not, are signals that a computer system hosting or running thecomputer program can be configured to access, including signalsdownloaded through the Internet or other networks. Concrete examples ofthe foregoing include distribution of executable software program(s) ofthe computer program on a CD ROM or via Internet download. In a sense,the Internet itself, as an abstract entity, is a computer readablemedium. The same is true of computer networks in general.

[0035] While this invention has been described in conjunction with thespecific embodiments thereof, it is evident that many alternatives,modifications and variations will be apparent to those skilled in theart. There are changes that may be made without departing from thespirit and scope of the invention.

What is claimed is:
 1. A method for coordinating data from one or moresources, the method comprising steps of: receiving data; determiningwhether the received data is partial data, wherein partial data includesdata to be coordinated with other associated data; and coordinating thereceived data with the associated data in response to the received databeing partial data.
 2. The method of claim 1, wherein the step ofcoordinating further comprises combining the received data and theassociated data into a single message.
 3. The method of claim 2, whereinthe single message is one of (1) a request for data, the requestincluding data received from one or more sources on one or more channelsand (2) a response to a request for data transmitted to one or moredestinations on one or more channels.
 4. The method of claim 1, furthercomprising steps of: determining whether all data to be coordinated isreceived; and transmitting the coordinated data to at least onedestination if all the data to be coordinated is received.
 5. The methodof claim 4, further comprising steps of: storing the received data ifall the data to be coordinated is not received; and repeatedlyperforming the steps of receiving, determining and coordinating untilall the data to be coordinated is received.
 6. The method of claim 4,further comprising steps of: determining whether to generate a requestfor data if all the data to be coordinated is not received; transmittingthe request to at least one source in response to generating therequest; and waiting for incoming data.
 7. The method of claim 1,further comprising steps of: storing the associated data in a memory;and storing the partial data in the memory, such that the partial dataand the associated data are retrievable from the memory forcoordination.
 8. A method of coordinating data received from one or moresources through one or more channels, the data being transmitted to oneor more destinations, the method comprising steps of: receiving thedata; determining whether the received data is partial data, whereinpartial data includes data to be coordinated with other associated data;and determining whether the associated data is received in response tothe received data being partial data; and coordinating the received datawith the associated data in response to the associated data beingreceived.
 9. The method of claim 8, wherein the step of coordinatingfurther comprises generating a message including the received data andthe associated data, wherein the message is to be transmitted to the oneor more destinations.
 10. The method of claim 8, wherein the step ofcoordinating further comprises: determining whether all the data to becoordinated is received; and transmitting the coordinated data in amessage to each of the one or more destinations in response to all thedata to be coordinated being received.
 11. The method of claim 10,wherein the step of coordinating further comprises steps of: determiningwhether to generate a request for data if all the data to be coordinatedis not received; transmitting the request to at least one source inresponse to generating the request; and waiting for incoming data. 12.The method of claim 10, wherein the step of determining whether all thedata to be coordinated is received further comprises determining whetherall the data to be coordinated is received using one of message headerinformation and an XML DTD associated with the received data.
 13. Themethod of claim 8, wherein the step of determining whether the receiveddata is partial data further comprises determining whether the receiveddata is partial data using one of message header information and an XMLDTD associated with the received data.
 14. A system comprising aplurality of user devices connected to a plurality of content providersthrough one or more networks, wherein messages transmitted between theplurality of user devices and the plurality of content providers arereceived by a coordination manager, and messages that are associatedwith each other are combined into at least one coordinated message. 15.The system of claim 14, wherein the coordination manager includessoftware stored in a middleware messaging system, wherein the middlewaremessaging system receives the messages that are associated with eachother and transmits the at least one combined message to at least onedestination.
 16. The system of claim 15, wherein the at least onecombined message comprises a single message including data from themessages that are associated with each other.
 17. The system of claim15, wherein the at least one combined message includes a plurality ofmessages, each transmitted to one of a plurality of destinations. 18.The system of claim 14, wherein the coordination manager determineswhether received messages are associated based upon one of messageheader information and an XML DTD associated with the received messages.19. The system of claim 15, wherein the content providers include one ormore servers connected to the middleware messaging system through one ofa direct connection or a connection through the one or more networks.20. The system of claim 19, wherein the middleware message system isconnected to the plurality of user devices through the one or morenetworks.
 21. An apparatus for coordinating messages comprising: atleast one computing device operable to receive data from one of acontent provider and a user device, wherein the at least one computingdevice is further operable to determine whether the received data is tobe coordinated with other associated data; and a database connected tothe at least one computing device and operable to store the receiveddata and the other associated data.
 22. The apparatus of claim 21,wherein the at least one computing device is operable to retrieve theother associated data from the database for coordinating the otherassociated data with the received data.
 23. The apparatus of claim 22,wherein the received data and the other associated data are coordinatedinto a single message for transmission to one of a user device and acontent provider.
 24. An apparatus for coordinating data from one ormore sources, the apparatus comprising: means for receiving data; meansfor determining whether the received data is partial data, whereinpartial data includes data to be coordinated with other associated data;and means for coordinating the received data with the associated data inresponse to the received data being partial data.
 25. The apparatus ofclaim 24, wherein the means for coordinating combines the received dataand the associated data into a single message.
 26. The apparatus ofclaim 25, wherein the single message is one of (1) a request for data,the request including data received from one or more sources on one ormore channels and (2) a response to a request for data transmitted toone or more destinations on one or more channels.